#ifndef CHRONOMETER_H_
#define CHRONOMETER_H_

#define _POSIX_C_SOURCE 200112L

#include <time.h>

/**
 * \brief Estrutura para um timer.
 *
 * Faz a medição de um intervalo de tempo.
 * Obs:	O timer não leva em consideração o tempo em que o processo ficou bloqueado ou na fila do escalonador.
 */
typedef struct{
	struct timespec delta;  ///< Armazena o intervalo total em que o timer ficou rodando.
	struct timespec t1;     ///< Marca o começo de um intervalo de tempo.
	struct timespec t2;     ///< Marca o final de um intervalo de tempo.
}chronometer_t;

void chronometerStart(chronometer_t* tp);      ///< Dispara o timer. \memberof chronometer_t
void chronometerPause(chronometer_t* tp);      ///< Pausa o timer. \memberof chronometer_t
void chronometerUnpause(chronometer_t* tp);    ///< Continua o timer. \memberof chronometer_t
long chronometerGetSec(chronometer_t tp);	   ///< Recupera a parcela em segundos que o timer contou. \memberof chronometer_t
long chronometerGetNSec(chronometer_t tp);     ///< Recupera a parcela em nanosegundos que o timer contou. \memberof chronometer_t


#endif /* CHRONOMETER_H_ */
